1、合并k个有序链表
思想：优先级队列，升序，但是要自己实现一个greater，也就是比较方法，就是防函数，operator()
struct cmp
{
    bool operator()(ListNode* &a,ListNode* &b)
    {
       return a->val>b->val;
    }
};
class Solution {
public:
    ListNode *mergeKLists(vector<ListNode *> &lists) {
        
        priority_queue<ListNode*,vector<ListNode*>,cmp> q;
        for(auto e:lists)
        {
            while(e!=nullptr)
            {
                q.push(e);
                e=e->next;
            }
        }
        ListNode* ans=new ListNode(0);
        ListNode* head=ans;
        while(!q.empty())
        {
            ans->next=new ListNode(q.top()->val);
            ans=ans->next;
            q.pop();
        }
        return head->next;
    }
};